package com.alipay.util;

import com.alipay.config.AlipayConfig;
import com.alipay.sign.RSA;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.Map;

/* *
 *类名：AlipaySubmit
 *功能：支付宝各接口请求提交类
 *详细：构造支付宝各接口表单HTML文本，获取远程HTTP数据
 *版本：3.3O
 *日期：2012-08-13
 *说明：
 *以下代码只是为了方便商户测试而提供的样例代码，商户可以根据自己网站的需要，按照技术文档编写,并非一定要使用该代码。
 *该代码仅供学习和研究支付宝接口使用，只是提供一个参考。
 */

public class AlipaySubmit {
    private final static Logger logger = LoggerFactory.getLogger(AlipaySubmit.class);
    /**
     * 生成签名结果
     *
     * @param sPara 要签名的数组
     * @return 签名结果字符串
     */
    public static String buildRequest(Map<String, String> sPara) {
        try {
            String prestr = AlipayCore.createLinkString(sPara); //把数组所有元素，按照“参数=参数值”的模式用“&”字符拼接成字符串
            String mysign = RSA.sign(prestr, AlipayConfig.private_key, AlipayConfig.input_charset);
            String sign = java.net.URLEncoder.encode(mysign, "UTF-8");
            String linkStr=  AlipayCore. createLinkString(sPara);
            String result=linkStr+"&sign=\"" + sign + "\"&sign_type=\"RSA\"";
            return result;
        } catch (Exception e) {
            System.out.println(e.getMessage());
            return null;
        }
    }
    /**
     * 构造退款url的具体参数
     * */
    public static String buildNoQuataRequest(Map<String, String> sPara) {
        try {
            String prestr = AlipayCore.createLinkString(sPara); //把数组所有元素，按照“参数=参数值”的模式用“&”字符拼接成字符串
            String mysign = RSA.sign(prestr, AlipayConfig.private_key, AlipayConfig.input_charset);
            String sign = java.net.URLEncoder.encode(mysign, "UTF-8");
            String linkStr=  AlipayCore. createLinkString(sPara);
            String result=linkStr+"&sign=" + sign + "&sign_type=RSA";
            return result;
        } catch (Exception e) {
            System.out.println(e.getMessage());
            return null;
        }
    }


}
